package com.db.collections;

import java.util.ArrayList;
import java.util.LinkedList;

/**
 * @author nulls.narik
 */
public class TestArrayVsLinkedList extends TestCollections {

    public static void main(String[] args) {
        TestArrayVsLinkedList testArrayVsLinkedList = new TestArrayVsLinkedList();
        testArrayVsLinkedList.test();
    }

    private static final int N = 1000;

    @Override
    public void test() {
        ArrayList<String> arrayList = new ArrayList<String>();
        LinkedList<String> linkedList = new LinkedList<String>();

        String text;
        // прогрев
        for (int i = 0; i < N * 10; i++) {
            text = randString();

            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);

            text = randString();

            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
        }

        arrayList.clear();
        linkedList.clear();

        long start, end;
        long avgArray, avgLinked;

        for (int i = 0; i < N; i++) {
            text = randString();

            start = System.nanoTime();

            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);
            arrayList.add(0, text);

            end = System.nanoTime();
            avgArray = end - start;

            text = randString();

            start = System.nanoTime();

            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);
            linkedList.add(0, text);

            end = System.nanoTime();
            avgLinked = end - start;

            System.out.printf("%d: %d - %d%n", i*30, avgArray, avgLinked);
        }
    }
}
